{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Using Game Controllers in the Jupyter Notebook"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The controller widget automatically detects connected gamepad and joysticks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from ipywidgets import Controller"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/html": [
       "<img src= class=\"jupyter-widget\">\n",
       "<script type=\"application/vnd.jupyter-embedded-widgets\">[{},{\"layout\":\"IPY_MODEL_9d635cf02f4e478197cfb6c767454fd6\"}]</script>"
      ]
     },
     "metadata": {
      "isWidgetSnapshot": true
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Controller()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "In the case where multiple controllers are connected, you may address the controllers by index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/html": [
       "<img src= class=\"jupyter-widget\">\n",
       "<script type=\"application/vnd.jupyter-embedded-widgets\">[{},{\"index\":1,\"layout\":\"IPY_MODEL_25715c146213466b8f01420b7fe1f81b\"}]</script>"
      ]
     },
     "metadata": {
      "isWidgetSnapshot": true
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Controller(index=1)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.3+"
  },
  "widgets": {
   "state": {
    "25715c146213466b8f01420b7fe1f81b": {
     "views": []
    },
    "6e173a7bb8d74cc59b085a7aa3d92400": {
     "views": [
      {
       "cell": {
        "cell_type": "code",
        "execution_count": 2,
        "metadata": {
         "collapsed": false,
         "trusted": true
        },
        "outputs": [
         {
          "data": {
           "image/png": "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",
           "text/html": "<img src= class=\"jupyter-widget\">\n<script type=\"application/vnd.jupyter-embedded-widgets\">[{},{\"layout\":\"IPY_MODEL_9d635cf02f4e478197cfb6c767454fd6\"}]</script>"
          },
          "metadata": {
           "isWidgetSnapshot": true
          },
          "output_type": "display_data"
         }
        ],
        "source": "Controller()"
       },
       "cell_index": 3,
       "root": true
      }
     ]
    },
    "8b3ccb5ea8ec42548749a1446a503653": {
     "views": [
      {
       "cell": {
        "cell_type": "code",
        "execution_count": 3,
        "metadata": {
         "collapsed": false,
         "trusted": true
        },
        "outputs": [
         {
          "data": {
           "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9oAAAAjCAYAAABrYnILAAANlElEQVR4Xu3dB5AuS1nGcXJQVFAUUdFbiIqoIChIlAtmRCmCEdGLSlKCAiIS9KKIgmIZwZIoOSkSRFGRI8lIFCiQdMEAmBWQrL4/mKlatjbz7T3n1P131VOz385MT/d/+qvap9+3e89/vkoEIhCBCEQgAhGIQAQiEIEIRCACGyNw/o3VVEURiEAEIhCBCEQgAhGIQAQiEIEInC+j3SCIQAQiEIEIRCACEYhABCIQgQhskEBGe4MwqyoCEYhABCIQgQhEIAIRiEAEIpDRbgxEIAIRiEAEIhCBCEQgAhGIQAQ2SCCjvUGYVRWBCEQgAhGIQAQiEIEIRCACEchoNwYiEIEIRCACEYhABCIQgQhEIAIbJJDR3iDMqopABCIQgQhEIAIRiEAEIhCBCGS0GwMRiEAEIhCBCEQgAhGIQAQiEIENEshobxBmVUUgAhGIQAQiEIEIRCACEYhABDLajYEIRCACEYhABCIQgQhEIAIRiMAGCWS0NwjzGKv64qn7p0avHP3cMT5nt6q/YU6cPfqx0YtOwvNPp0feYhr7k6NvH73udGp4bY1ABCIQgQhEIAIRiEAENkNgJ6P9eVP1T4w+NHr36EKjvx99cPSQzTy2Wg5J4LJz/e+MnjO6/yHv3cTlV5xKXj76ulFGe2+i15jTfzkyOZLR3sToq44IRCACEYhABCIQgQicZgS2G+0vm/Y/e/Rto7/a0pefXX6+9ynUvztNW37tFGrPcTflCfOA154ko61v/zQSpc1o7/+mPzCXXPkIRts9lxr92fKI7Z/3f3JXRCACEYhABCIQgQhEIAInncB2o/2KadEfje6xrWUXmM/Shh940lv80QYwIC8cfcop0p5zoxmPW4zbyYho698/jL5zlNHe/22/by758uV97X/1R68wlhnsHxmd2OHzQevpughEIAIRiEAEIhCBCETgJBPYarSvO21hXh1fvEO7RNr+Y3TJ0X1G7x191YgBfMzoKqP7jkRdLzy63ejpox/Y55xHffroh0afutR5mzn+7YjBv+tSn3XCorq/PbJO+UdHjP8fjNYI4A7N/phfMT+3HL1ped6/zvG5Sz2i9u8fieq/efTjo6uO7rVcr+93Hr169N2jXx/daDmukf6rzedvGX3J0uZbz9EzTVz88Qgv9zxxdIfR/45kD1xvJFVfirbP7xkp9xx90ujTRtcfPX50FKO9U9/2el+e/YmjB43eMbr86Gajbx7tZ7S9b5wsP/iZ0eeO8PmtpQ4s/IyvSR2ZCSLlXzCSmv4XS7+1wbp0yxecf9bS9++d42VGXznC5WtdeMByWA7fNPU+baTP3zX696Vt3oU2vWuX5zLaxtlPj3xvvEffke8fPXwkvfwNo/uNvmd06ZEx/4uj3x8ZK5ZsbP38qPl88+XeT57jZ45uO/rv0e1HdxvdZKn/s+donL1sl/b16whEIAIRiEAEIhCBCETgGAlsNdoMz6+OPmf0j3s8k3l23fNH/qB/4+jM0UtHTx0xyz84kj7LsF5hZI33bufeMueYkB8eMS4PGDHVXzFisv9n9Jujbx0xPZ+wtNF9h93M7fVzj6is9cZMF8PD3DHDvzc6Y2Q9tDRpEwoME3N/iZGJg/8a6ROzb8MrfZNiz0z93+iho1uNFJMVq2l8wfzM1JtM8Iw/HTGk+v2fI88/Z6R9jOgzRt8x+poRM2XCgcHXlsMa7d36xszv9U70xcSLZ3rP3uFXj/Yz2rj9y8gkyC8s7cfammVG1XhRpwkakwiMon6aPMFxjZy7FgOm3Zg6a2Tc4WrCQsHCpM9BylE5MMtXHzHdivfDDL9mj4caN8bxY0fMNaNtEsUEz7+NjO+/Weo1UcRoK+eMzhqd2OGzSRzG+4bLORM9JkBuPNI33z8TOyZjvDuTXd+3XNshAhGIQAQiEIEIRCACETgXCWw1qkztg0ciZe/cpQ1M+NtGzC4zoTCoTBFD8YjR20er+RENvenoz/c4x3gxpOt668+an790JDLMeH7jyDXKGaNzluNhjbY2M5frJlUiiaLiDP3FRiKkNrHS3ieP1gmH35ifRe/vvrThr+fI8LiGAf7w6POXekwwME6KPoiCS7m37v0PR8yR8qTlyPQzmYz3dUaMt6wAZolxEvF85nLtUVPH9+rbbu8Ld++OAWSElcOkjotCX3NkcuCCI2NGdNuECbMpAitqq+CriPAqzLzJHBkNTLXIuPsYeJMVTDx+ot34//Ny336Ho3Awbj9jdM5IBoA2PnJkrO9VtqaO+44Zv75bNhPUB2Oa0TbmjIuDGO2HzXVMOtOuMNcmjGxeaJIHY+ZaZgS+xjFDX4lABCIQgQhEIAIRiEAEzmUCW422yJj03GuNGN+dypnzS5Fsqatr2iwDYc20yLC0WAZtNdpbzdlu55hYkb8r7fBAUXHp29ujh2fM7w5rtFX/kpG0baaeUWNK1o3epAKLOjK76r7cSPuZY8ZpNdrY/PJoNctMjrRnabsMt6j19rLdaOMjRZ/h0j9pxupTL1PJaHum83grRzXa7t2tb7u9E30Shb/IyESCclSj7d4/WfTzc2Q6GUG/U4w57/8py+eth7Pmg/Elk8CkhOwB0WxmV0q6aLeU6oOWw3JYo/cmJCwr8Fzm2Dvaq2xfo+39Gzci8Ec12ifmXpMvUsSVNRvAOHrrSMbBarRN+OB1mLT6gzLsughEIAIRiEAEIhCBCERgHwJbjTZTJdoonVh0e3sR+RWhdY2Ua5Fd5ZdG7r3j6ChGWyo2kyBiKAKqqF/Ej+GVLsxsKaJ3zDFDcRSjzSQxZ9ZlWwPLVDOV0nFFXEWV/d6/Mjus0dZmRpLpZsoUUV0Ga7vRXtfuil6LHktBN3HB2DFxTLXopfPrv1Q7qtHeq2+7vS/G9lUja82tuVc+HqPNtP/KyL8o2260rdcWrWaC18JMS9+3hME515iIsX5ear/JHCncOHpPsij2K0fhsBpt2QmyHWQx+G5I99+rbDfa6jGJYumDCLxsDfUdJqJtrFqTbp28YrLL91EGiO9DRnu/EdD5CEQgAhGIQAQiEIEInEsEtq9xtg6ambDOmClYizRUxnbdlZzZtpmXYiMy67sZMxE/pmfdHIw5s4mUtb57nTsx50UobZDFpFx7JGWYcRUhFgFd6/Jc5oIJs3ZXai+zepAiIioyzcSKlqvDGnBRQutZmWUbXUnnZYL0mQHXpjWSuFNE+wuXOnExQWBt8jopIOLKaL9ytHLBzMSECQpR9i8aSW32XGt7TQTov4gk86+9zxvhrx0mGw5a9uqbFPid3pc2eZ9/N7I5m7XTfrau3PrxNcq9Wxukjhsz0sPdy2iaqMGR0bYeXx+VG4ykzptQkTJuLbRJBevCpZ1bD81Mq0u6tPchHV+Ryu19MeX7laNwMG7XYuM278F43q+sY9hmZGeMLK8wtow5KfEi5MaFd2yXcZsBmmjB2HfA5IYxvfWz9HJjwEQOUy2DxAZqJih8d0S1jSeTRCLa2mlZgv0Fzl7kvVQiEIEIRCACEYhABCIQgWMmsNNmYoyLjb6safbHvvXa0pqtB1Ws4V7X9orsWUfLIIk4ilgyI9awioZKBxaRlRpMO51jPkUt1Sltnbk5a2Qt7sWX+5k2xs/vRcC1mynVFkaQITlIEa1nXEUGmRKGyIZbTDATYxfwu4xEX0VhGWb3SG9nxEVTf3f0nBGzp11Sy5k/EsG25pgxtGGa6Kc6Ge2Ljtb1uIwUHoykuhhImQFMlOipNH6mTMTZjuSuYbTwlup+0P7OpR8x/Dv1zfN2e1/eydoH/3bK5Iu+Wi9uJ3IR770KQ2fMMJX6ZJKF6dQvPPFgMNdN90ym2N3de2U+RW+lzavD+BGxdY8osHX2TKpxYP34uu59nyYdmcNqTm2GZ+KF4d6v6I/UbZMy+oT1GnW/xfxsrDtnnNk0TsbGo0e+dza/MxFhQmP7ZxMdxqGx6ft59shEEWai+yahjBWTFsaiyLnvnOuNI+2vRCACEYhABCIQgQhEIALHTOCwu3Yfc3OOtXqRb5FxhkSxkRajLpV83WDquBqwPXX8uJ5zqtS7dTO0U6VNH2877OTNAJs4qUQgAhGIQAQiEIEIRCACEdiVwHnJaNv8TLSY2Rbl03fptdKOTxzzGJH+LJq97qx+zI876dWLOouoimifzkXmgwiyjAbZFSLTlQhEIAIRiEAEIhCBCEQgAnsSOC8ZbWnf0p6tbbWO1Vpha8DXtcLHNVS+fiqW6iw9XfR8/Vdlx/W8k1mvVHipz9K9pd3739g27Dpdi3Xl1o9Lsbceer+16adrP2t3BCIQgQhEIAIRiEAEIrBBAuclo71BbFUVgQhEIAIRiEAEIhCBCEQgAhHYmUBGu5ERgQhEIAIRiEAEIhCBCEQgAhHYIIGM9gZhVlUEIhCBCEQgAhGIQAQiEIEIRCCj3RiIQAQiEIEIRCACEYhABCIQgQhskEBGe4MwqyoCEYhABCIQgQhEIAIRiEAEIpDRbgxEIAIRiEAEIhCBCEQgAhGIQAQ2SCCjvUGYVRWBCEQgAhGIQAQiEIEIRCACEchoNwYiEIEIRCACEYhABCIQgQhEIAIbJJDR3iDMqopABCIQgQhEIAIRiEAEIhCBCGS0GwMRiEAEIhCBCEQgAhGIQAQiEIENEvh/GYL+Ql1euhUAAAAASUVORK5CYII=",
           "text/html": "<img src= class=\"jupyter-widget\">\n<script type=\"application/vnd.jupyter-embedded-widgets\">[{},{\"index\":1,\"layout\":\"IPY_MODEL_25715c146213466b8f01420b7fe1f81b\"}]</script>"
          },
          "metadata": {
           "isWidgetSnapshot": true
          },
          "output_type": "display_data"
         }
        ],
        "source": "Controller(index=1)"
       },
       "cell_index": 5,
       "root": true
      }
     ]
    },
    "9d635cf02f4e478197cfb6c767454fd6": {
     "views": []
    }
   },
   "version": "0.0.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
